package com.ningxia.water.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ningxia.water.entity.TsApplicantInfo;
import com.ningxia.water.entity.TsWellInfo;
import com.ningxia.water.vo.out.*;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hz
 * @since 2021-03-15
 */
public interface ITsWellInfoService extends IService<com.ningxia.water.entity.TsWellInfo> {

//================================首页================================================
    /**
     * 获取机井数量及其不同状态的数量
     * @return
     */
    WellStatusCountsVo getWellStatusCount();

    /**
     * 用户当年用水量排行
     * @param startTime
     * @param endTime
     * @return
     */
    List<RankConsumedVo> rankOfWaterConsumed(String startTime, String endTime);

    /**
     * 用水户年度用水量
     * @param startTime
     * @param endTime
     * @return
     */
    List<RankConsumedVo> getWaterConsumed(String startTime, String endTime);

    /**
     * 每年全部机井每个月的用水量
     * @param startTime
     * @param endTime
     * @return
     */
    List<MonthConsumedVo> getMonthConsumed(String startTime, String endTime);


    /**
     * 每年全部机井每个月的用水量及其累计用水量
     * @param startTime
     * @param endTime
     * @return
     */
    Double getTotalConsumed(String startTime, String endTime);

//===================================机井页面=============================================
    /**
     * 根据条件查询机井
     * @param applicantName
     * @param wellCode
     * @param wellName
     * @param address
     * @param wellType
     * @return
     */
    List<WellInfoVo> findWellInfosByConditions(String applicantName, String wellCode, String wellName, String address, Integer wellType,Integer status,Integer zoneType);

    /**
     * 获取所有机井信息
     * @return
     */
    List<WellInfoVo> getWellInfos();

    /**
     * 将指定机井id的状态（status）改变
     * @param wellId
     * @param status
     * @return
     */
    Integer updateStatus(Integer wellId, int status);


    List<ReportVo> getWellReport(String type, String currentTime);

    /**
     * 添加机井信息
     * @param wellInfo
     * @param applicantId
     * @return
     */
    boolean insertWellInfo(TsWellInfo wellInfo, Integer applicantId);


    /**
     * 通过wellId来查询applicantId
     * @param wellId
     * @return
     */
    Integer findApplicantIdByWellId(Integer wellId);
}
